package xiaojun.JAVA.service.array;

import xiaojun.JAVA.domain.dto.DeptDto;
import xiaojun.JAVA.domain.emtity.Dept;
import xiaojun.JAVA.domain.vo.DeptVo;
import xiaojun.JAVA.domain.vo.Result;
import xiaojun.JAVA.service.IDeptService;
import xiaojun.JAVA.service.IUserService;

/**
 * 业务层-部门
 *
 * @author 赖晓君
 * @since 2025/6/5  08:59
 */
public class DeptService extends BaseService<Dept,DeptDto,DeptVo>implements IDeptService {


    private IUserService userService;


    private static IDeptService singleton;

    private DeptService(){
        data = new Dept[DATA_SIZE+1];
        temp = new DeptVo[DATA_SIZE+1];
    }

    public static IDeptService getInstance(){
        if(singleton == null){
            singleton = new DeptService();
        }
        return singleton;
    }
    @Override
    DeptVo convertToVo(Dept dept){
        return new DeptVo(dept.getId(),dept.name,dept.phone);
    }

    @Override
    Dept createEntity(DeptDto dto,int id){
        return new Dept(id,dto.name,dto.phone);
    }

    @Override
    void updateEntity(DeptDto dto,Dept dept) {
        dept.name = dto.name;
        dept.phone = dto.phone;
    }



    @Override
    public Result delete(int id) {
        if (!existsById(id)) {
            return Result.failure("删除失败，不存在该数据");
        }
        if (userService == null){
            userService = UserService.getInstance();
        }
        if(userService.deptInUse(id)){
            return Result.failure("删除失败，还有用户属于该部门，不能删除");
        }
        data[id] = null;
        return Result.success("删除成功",null);
    }
}
